1.2 如何使用正则表达式

上节我们知道了正则表达式的用途,尝试了几种正则表达式的使用场景,本节我们将了解如何在各个文本编辑器和程序语言中使用正则表达式。

正则表达式的应用场景非常多,在几乎所有常用的文本编辑器和程序语言中都可以使用正则表达式进行文本的搜索或替换。本节我们学习在几种常见的编辑器和编程语言中如何使用正则表达式。

1.2.1 在编辑器中

Visual Studio Code

Visual Studio Code(VS Code) 是微软公司出的跨平台开源代码编辑器。它也是可以使用正则表达式进行搜索和替换的。

在 VS Code 使用正则表达式主要有两个地方:

一个是在当前打开的文件中,按 Ctrl/⌘ + F 可以打开搜索框(如下图),然后点击搜索输入框右侧的“使用正则表达式”图标打开正则表达式选项。这样就可以在当前文件中使用正则表达式搜索和替换了。

还有一个是点击工具栏中的放大镜图标或按 Ctrl/⌘ + Shift + F 打开全局搜索框(如下图),启用正则表达式的方法和单文件搜索一样。

Sublime Text

Sublime Text 做为老牌的文本编辑器,当然也是可以使用正则表达式的。和 VS Code 一样,Sublime Text 也可以在当前文件和全局搜索中使用正则表达式。

Ctrl/⌘ + F 可以打开搜索框(如下图),然后点击搜索输入栏左侧的“正则表达式”图标打开正则表达式选项。这样就可以在当前文件中使用正则表达式搜索和替换了。

Ctrl/⌘ + Shift + F 打开全局搜索框(如下图),启用正则表达式的方法和单文件搜索一样。

IDEA 系开发工具

IDEA 系开发工具包括 IntelliJ IDEA Ultimate、IntelliJ IDEA Community、WebStorm、PyCharm、PhpStorm、Android Studio、华为开发者工具等基于 IntelliJ IDEA 开发的开发工具。

IDEA 系开发工具正则表达式的用法和快捷键基本和 VS Code 以及 Sublime Text 一样。

1.2.2 在代码中

Java

import java.util.regex.*;

public class RegexTest {
    public static void main(String[] args) {
        String text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx";
        Pattern pattern = Pattern.compile("(1\\d{10})|([a-z0-9]+@[a-z0-9.]+)");
        Matcher matcher = pattern.matcher(text);
        while (matcher.find()) {
            for (int i = 0; i < matcher.groupCount(); i++) {
                System.out.println(matcher.group(i + 1));
            }
        }
    }
}

Javascript

const text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx";

// 测试text中是否有匹配正则的子串,返回boolean类型
const test = /1\d{10}/.test(text);
console.log(test);

// 检查text中是否有和正则匹配的子串,返回匹配结果
let matches;
const regex = /(1\d{10})|([a-z0-9]+@[a-z0-9.]+)/g;
while ((matches = regex.exec(text))) {
  console.log(matches);
}

PHP

$text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx";

$matches=[];

preg_match_all("/(1\d{10})|([a-z0-9]+@[a-z0-9.]+)/",$text,$matches);

var_dump($matches);

Python

#!/usr/bin/env python3

import re

text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx"

# 查找全部
findall = re.findall(r'(1\d{10})|([a-z0-9]+@[a-z0-9.]+)', text)
print(findall)

# 全匹配
match = re.match(r'1\d{10}', text)
print(match)

# 搜索
search = re.search(r'1\d{10}', text)
print(search.group())

Shell

grep -E "^#.*?" 文件名

发表评论